package co.edu.usbcali.modeloo;

import java.util.HashSet;
import java.util.Set;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.Table;

/**
 * Proyectos entity. @author MyEclipse Persistence Tools
 */
@Entity
@Table(name = "proyectos", catalog = "estimacionpreliminar")
public class Proyectos implements java.io.Serializable {

	// Fields

	private Integer idproyecto;
	private LenguajesDeprogramacion lenguajesDeprogramacion;
	private Empresa empresa;
	private String nombreproyecto;
	private String nombregerenteproyecto;
	private Integer personalsugerido;
	private String lenguajeprogramacion;
	private Set<ReglaEnProyecto> reglaEnProyectos = new HashSet<ReglaEnProyecto>(
			0);
	private Set<Actividades> actividadeses = new HashSet<Actividades>(0);
	private Set<Taxonomia> taxonomias = new HashSet<Taxonomia>(0);
	private Set<CostosPorProyecto> costosPorProyectos = new HashSet<CostosPorProyecto>(
			0);

	// Constructors

	/** default constructor */
	public Proyectos() {
	}

	/** minimal constructor */
	public Proyectos(Integer idproyecto) {
		this.idproyecto = idproyecto;
	}

	/** full constructor */
	public Proyectos(Integer idproyecto,
			LenguajesDeprogramacion lenguajesDeprogramacion, Empresa empresa,
			String nombreproyecto, String nombregerenteproyecto,
			Integer personalsugerido, String lenguajeprogramacion,
			Set<ReglaEnProyecto> reglaEnProyectos,
			Set<Actividades> actividadeses, Set<Taxonomia> taxonomias,
			Set<CostosPorProyecto> costosPorProyectos) {
		this.idproyecto = idproyecto;
		this.lenguajesDeprogramacion = lenguajesDeprogramacion;
		this.empresa = empresa;
		this.nombreproyecto = nombreproyecto;
		this.nombregerenteproyecto = nombregerenteproyecto;
		this.personalsugerido = personalsugerido;
		this.lenguajeprogramacion = lenguajeprogramacion;
		this.reglaEnProyectos = reglaEnProyectos;
		this.actividadeses = actividadeses;
		this.taxonomias = taxonomias;
		this.costosPorProyectos = costosPorProyectos;
	}

	// Property accessors
	@Id
	@Column(name = "IDPROYECTO", unique = true, nullable = false)
	public Integer getIdproyecto() {
		return this.idproyecto;
	}

	public void setIdproyecto(Integer idproyecto) {
		this.idproyecto = idproyecto;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "IDLENGUAJE")
	public LenguajesDeprogramacion getLenguajesDeprogramacion() {
		return this.lenguajesDeprogramacion;
	}

	public void setLenguajesDeprogramacion(
			LenguajesDeprogramacion lenguajesDeprogramacion) {
		this.lenguajesDeprogramacion = lenguajesDeprogramacion;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ID")
	public Empresa getEmpresa() {
		return this.empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	@Column(name = "NOMBREPROYECTO", length = 100)
	public String getNombreproyecto() {
		return this.nombreproyecto;
	}

	public void setNombreproyecto(String nombreproyecto) {
		this.nombreproyecto = nombreproyecto;
	}

	@Column(name = "NOMBREGERENTEPROYECTO", length = 100)
	public String getNombregerenteproyecto() {
		return this.nombregerenteproyecto;
	}

	public void setNombregerenteproyecto(String nombregerenteproyecto) {
		this.nombregerenteproyecto = nombregerenteproyecto;
	}

	@Column(name = "PERSONALSUGERIDO")
	public Integer getPersonalsugerido() {
		return this.personalsugerido;
	}

	public void setPersonalsugerido(Integer personalsugerido) {
		this.personalsugerido = personalsugerido;
	}

	@Column(name = "LENGUAJEPROGRAMACION", length = 30)
	public String getLenguajeprogramacion() {
		return this.lenguajeprogramacion;
	}

	public void setLenguajeprogramacion(String lenguajeprogramacion) {
		this.lenguajeprogramacion = lenguajeprogramacion;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "proyectos")
	public Set<ReglaEnProyecto> getReglaEnProyectos() {
		return this.reglaEnProyectos;
	}

	public void setReglaEnProyectos(Set<ReglaEnProyecto> reglaEnProyectos) {
		this.reglaEnProyectos = reglaEnProyectos;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "proyectos")
	public Set<Actividades> getActividadeses() {
		return this.actividadeses;
	}

	public void setActividadeses(Set<Actividades> actividadeses) {
		this.actividadeses = actividadeses;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "proyectos")
	public Set<Taxonomia> getTaxonomias() {
		return this.taxonomias;
	}

	public void setTaxonomias(Set<Taxonomia> taxonomias) {
		this.taxonomias = taxonomias;
	}

	@OneToMany(cascade = CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "proyectos")
	public Set<CostosPorProyecto> getCostosPorProyectos() {
		return this.costosPorProyectos;
	}

	public void setCostosPorProyectos(Set<CostosPorProyecto> costosPorProyectos) {
		this.costosPorProyectos = costosPorProyectos;
	}

}